random库随机数产生原理
1 | graph LR |
库函数详解(21个)
- 基本随机函数(4个):seed(),getstates(),setstate(),random()
- 扩展随机函数(6个):randint(),getrandbits(),randrange(),choice(),shuffle(),sample()
- 分布随机函数(11个):uniform(),triangular(),betavariate(),expovariate(),gammavariate(),gauss(),lognormvariate(),normalvariate(),vonmisesvariate(),paretovariate(),weibullvariate()
基本随机函数 | 描述 |
---|---|
seed(a=None, version=2) | 初始化给定的随机数种子。a为可哈希对象,缺省为当前时间,a为整数时回用到所有的位。 |
getstate() | 返回随机数生成器内部状态(三元组) |
setstate(state) | 设置随机数生成器内部状态,该状态从getstate()函数获得 |
random() | 返回一个[0.0,1.0)之间的随机小数 |
扩展随机函数 | 描述 |
---|---|
randint(a,b) | 生成一个[a,b]之间的整数 |
randrange(m, n[, k]) | 生成一个[m, n)之间以k为步长的随机整数 |
getrandbits(k) | 生成一个k比特长的随机整数 |
choice(seq) | 挑选。从序列seq中随机选择一个元素 |
suffle(seq) | 洗牌。将序列seq打乱顺序,原序列被修改 |
sample(p, k) | 抽样。从序列或集合p中随机选择k个元素,原对象不变 |
分布随机数 | 描述 |
---|---|
uniform(a,b) | 采用等概率分布,生成一个[a, b]之间的随机小数 |
triangular(low, high, mode) | 采用三角分布(辛普森分布),生成一个[low, high]之间的随机小数 |
betavariate(alpha, beta) | 采用beta分布,生成一个[0, 1]之间的随机小数 |
expovariate(lambda) | 采用指数分布,生成一个(0,∞)之间的随机整数 |
gammavariate(alpha, beta) | 采用gamma分布,生成一个随机小数 |
gauss(mu, sigma) | 采用高斯分布,生成一个随机小数 |
lognormvariate(mu, sigma) | 采用对数正态分布,生成一个随机小数 |
normalvariate(mu, sigma) | 采用正态分布,生成一个随机小数 |
vonmisesvariate(mu, kappa) | 采用冯米塞斯分布,生成一个随机小数 |
paretovariate(alpah) | 采用帕累托分布,生成一个随机小数 |
weibullvariate(alpha, beta) | 采用韦伯分布,生成一个随机小数 |
1 | >>>from random import * |
1 | import random |